package com.ry.hystrix.config;

import com.alibaba.fastjson.JSONObject;
import com.ry.hystrix.service.ConsumerHystrixService;
import feign.hystrix.FallbackFactory;
import org.springframework.stereotype.Component;

/**
 * hystrix断路器配置指定方法
 */
@Component
public class HostServiceFallbackFactory implements FallbackFactory<ConsumerHystrixService> {
    @Override
    public ConsumerHystrixService create(Throwable throwable) {
        return () -> {
            /**
             * 如果ConsumerHystrixService 接口中有多个方法。那么可以将所有方法都重写。
             * 重写后的方法就是 在feign调用 A || B || C 方法 失败后 执行 Aimpl || Bimpl || Cimpl 方法
             * 这样就实现了多个一个接口中所有方法 调用异常的 熔断处理
             */
            JSONObject json = new JSONObject();
            json.put("id", 1111);
            json.put("description", "服务异常演习专用！");
            json.put("msg", "哎呀我的天 hystrix 还不错哦");
            return json.toJSONString();
        };
    }
}
